package Thread;

import java.util.Scanner;

public class Demo15 {

    static class Counter {
        /*volatile*/ public int flg = 0;
    }
    // volatile 显示禁止了编译器的优化，JVM读取这个变量知道这个屏障在，就知道每次要重新读取这个内存的内容，而不是进行优化
    // 频繁的读取内存，速度变慢了

    public static void main(String[] args) {
        Counter counter = new Counter();

        Thread t1 = new Thread(() -> {
            while (counter.flg == 0) {
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                // 休眠 1ms,循环转速变慢，没有进行频繁地读内存操作，所以编译器没有优化
            }
            System.out.println("t1 end.");
        });
        t1.start();

        Thread t2 = new Thread(() -> {
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入一个数字：");
            counter.flg = scanner.nextInt();
        });
        t2.start();
    }
}
